package com.woniuxy.service;

import com.woniuxy.entity.*;
import com.woniuxy.vo.FoodVO;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Hgx
 * @ClassName FoodService
 * @create 2020-05-25 22:08
 */
public interface FoodService {
    /**
     * 按照美食名  和营地地点动态条件查询 美食
     * @param map
     * @return
     */
    List<Food> selectByFoodNameAndCampId(Map map) throws Exception ;

    /**
     * 查询美食商品详情需要foodId
     * @param foodId
     * @return
     */
    Food selectFoodByFoodId(Integer foodId) throws Exception ;

    /**
     * 查询该foodId的所有评论
     * @param map
     * @return
     */
    List<FoodComment> selectAllFoodCommentByFoodId(Map map) throws Exception ;


    /**
     * 查询美食订单
     * @param map
     * @return
     */
    List<FoodVO> selectAllFoodOrderByUserId(Map<String,Object> map) throws Exception ;

    /**
     * 根据营地id查询营地正在使用的车
     * @param campId
     * @return
     */
    List<Car> selectAllCarByCampId(Integer campId)throws Exception ;

    /**
     * 新增美食的订单
     * @param foodOrder
     * @return
     */
    int insertFoodOrder(FoodOrder foodOrder);

    /**
     * 查询该商品是否收藏
     * @param foodId
     * @param userId
     * @return
     */
    FoodCollection judgeUserFoodCollection(int foodId, int userId);

    /**
     * 添加收藏
     * @param foodCollection
     * @return
     */
    int insertFoodCollection(FoodCollection foodCollection);

    /**
     * 取消收藏
     * @param foodId
     * @param userId
     * @return
     */
    int deleteCollection(int foodId, int userId);

    /**
     * 查询该用户美食所有收藏
     * @param userId
     * @return
     */
    List<FoodCollection> selectAllCollection(int userId);

    /**
     * 根据id删除收藏
     * @param id
     * @return
     */
    int deleteCollectionById(int id);

    /**
     * 用户支付完成之后的评论美食或者从订单中查询送达的美食进行评论
     * @param foodId
     * @param userId
     * @param comment
     * @return
     */
    int insertFoodComment(Integer foodId, Integer userId, String comment);

    /**
     * 用户支付时候 的密码验证
     * @param userId
     * @return
     */
    User selectUserInfoByuserId(Integer userId);

    /**
     * 用户取消美食订单的
     * @param foodOrderId
     * @return
     */
    int deleteFoodOrder(Integer foodOrderId);

    /**
     * 查询用户是否对美食评论过
     * @param foodOrderId
     * @param foodId
     * @param userId
     * @return
     */
    int selectIsOrYesFoodComment(Integer foodOrderId,Integer foodId, Integer userId);

    /**
     * 超过时间修改数据库中的订单的状态
     * @param id
     */
    void updateOrderStatusById(Integer id);
}
